from datetime import datetime, timedelta
import random
from faker import Faker

# 初始化 Faker 并设置为中文
fake = Faker('zh_CN')

# 使用 Faker 生成2025年1月1日到2025年5月1日之间的随机日期，包含时分秒
def generate_date_with_faker():
    """
    使用Faker库生成2025年1月1日至2025年5月1日之间的随机日期和时间。

    该函数定义了两个日期边界，然后在这两个边界内生成一个随机日期。
    同时，生成一个随机的时间对象，并将这个时间对象与随机日期对象结合，
    生成一个新的datetime对象，以模拟一个具体的日期和时间点。

    Returns:
        datetime: 2025年1月1日至2025年5月1日之间的随机日期和时间。
    """
    # 定义随机日期的起始范围
    start_date = datetime(2025, 1, 1)
    # 定义随机日期的结束范围
    end_date = datetime(2025, 5, 1)
    # 在指定范围内生成一个随机日期
    random_date = fake.date_between(start_date=start_date, end_date=end_date)
    # 生成一个随机的时间对象
    random_time = fake.time_object()
    # 将随机日期和随机时间结合，生成一个新的datetime对象
    return datetime.combine(random_date, random_time)


# 使用 random 生成2025年1月1日到2025年5月1日之间的随机日期
def generate_date_with_random():
    start_date = datetime(2025, 1, 1)
    end_date = datetime(2025, 5, 1)
    delta = end_date - start_date
    int_delta = (delta.days * 24 * 60 * 60) + delta.seconds
    random_second = random.randrange(int_delta)
    return start_date + timedelta(seconds=random_second)

if __name__ == '__main__':
    # 示例：生成并打印随机日期
    print("使用 Faker 生成的随机日期:", generate_date_with_faker())
    print("使用 random 生成的随机日期:", generate_date_with_random())
